Web viewer setup dialog and grammar for generating web addresses

ABSTRACT

A setup dialog for a web viewer dynamically changes to reflect parameters needed to generate a web address. The setup dialog can include a list box containing websites for which website templates are available for assisting the user in generating web addresses. The list box can also include an option to generate a custom web address without using a website template. An extensible grammar is provided for generating custom website templates.

TECHNICAL FIELD

The subject matter of this patent application is generally related touser interfaces for computer applications.

BACKGROUND

Many websites build dynamic web pages based on parameters embedded in adynamic web address, which is also referred to as a dynamic UniformResource Locator (URL). These parameters are included in the URL toretrieve desired information (e.g., stock quotes, catalog items). Someexamples of websites that build dynamic web pages include but are notlimited to: Google™ Search, Yahoo!® Finance Stock Lookup, Google™ Maps,FedEx® Tracker, Amazon®, etc.

Building a dynamic URL is typically a manual process performed bysophisticated computer programmers, and may require the programmer todefine calculated expressions for building the URLs. Unfortunately,defining calculated expressions for building dynamic URLs can be adaunting process for average users.

SUMMARY

A setup dialog for a web viewer dynamically changes to reflectparameters needed to generate a web address. The setup dialog caninclude a list box containing websites for which website templates areavailable for assisting the user in generating web addresses. The listbox can also include an option to generate a custom web address withoutusing a website template. An extensible grammar is provided forgenerating custom website templates.

In some implementations, a method includes: presenting a setup dialog;receiving a first input through the setup dialog, the first inputspecifying a website for which a website template is available forbuilding a web address for the website; determining a parameter of theweb address based on the website template; presenting the parameter inthe setup dialog; receiving a second input through the setup dialog, thesecond input specifying a value for the parameter; and generating theweb address with the specified value.

Other implementations of a web viewer setup dialog and grammar forgenerating web addresses are disclosed, including implementationsdirected to systems, methods, apparatuses, computer-readable mediums anduser interfaces.

DESCRIPTION OF DRAWINGS

FIG. 1 illustrates an implementation of a web viewer setup dialog.

FIG. 2 a illustrates an implementation of a web viewer setup dialog witha website template for a map website selected.

FIG. 2 b is the web viewer setup dialog of FIG. 2 a, including userinterface elements for displaying instructions.

FIG. 2 c is the web viewer setup dialog of FIG. 2 a, including thespecification of a database record field for a first web addressparameter.

FIG. 2 d is the web viewer setup dialog of FIG. 2 a, including thespecification of a database record field for a second web addressparameter and a fixed value for a third web address parameter.

FIG. 3 illustrates an implementation of a web viewer setup dialog with acustom web address option selected.

FIG. 4 illustrates an implementation of a web viewer setup dialog thatcan be invoked by a script.

FIG. 5 is a flow diagram of an implementation of a web viewer setupdialog process.

FIG. 6 is a block diagram of an implementation of a user systemarchitecture for hosting a database development tool that includes a webviewer setup dialog.

DETAILED DESCRIPTION User Interface Descriptions

FIG. 1 illustrates an implementation of a web viewer setup dialog 100. Aweb viewer is generally a browser that is integrated with anotherapplication, such as a database development tool (e.g., FileMaker®).Generally, the web viewer provides a user interface with variouscontrols for allowing users to access websites and view web pagecontent. In some implementations, the setup dialog 100 can be presentedwhen a user defines a web viewer object on a layout. The setup dialog100 allows users to specify a URL for a web viewer object and populateURL parameters with values, conditions, record fields and/orexpressions.

Many useful websites are “data-driven” in that they generate dynamic webpages based on one or more parameters embedded in a URL supplied by arequester. URLs generally include a “URL stem” which is a constant orstatic part of the URL that is typically located at the beginning of astring. For example, a URL stem for a map website could be in the formof www.map.com/maps/map.adp?.

The values of the parameters in typical dynamic URLs are the result oftext typed into web-forms creating a specific unique URL. Examples ofURL parameters include but are not limited to: an address for a mapwebsite, a stock symbol for a stock lookup, a catalog number for abookstore website, etc. In database development applications, users canspecify their own parameters, such as field values from a databaserecord. The parameters can be identified in the URL by using a parameteridentifier string. A parameter identifier string can be any constantstring in the URL that identifies a specific parameter. For example, thevalue of a street address parameter in a mapping website setup dialogcan be prefaced with the constant string &address=, where the &addresspart is the parameter identifier string.

Referring to FIG. 1, in some implementations the setup dialog 100includes a list box 102, a web address edit box 104, one or moreparameter edit boxes 106, specify field or calculation dialog buttons108 corresponding to the parameter edit boxes 106, control check boxes110 and 112, a specify calculation dialog button 114, a parameter namelabel 116 and a required/optional label 118. The list box 102 includes alist of websites for which a website template is available. Each websitetemplate is associated with a website in the list box 102 and provides astarting point for building a URL for the website. In the example shown,the list box 102 includes a FileMaker® technical information website, asearch website, a finance stock lookup website, a package trackingwebsite, a map website and a language translation website. Thesewebsites are examples; other websites are possible with correspondingtemplates. Each of these websites can be accessed by a dynamic URL thatincludes one or more parameters that can be supplied by users requestingaccess to the website. For example, the map website URL can includeparameters for street address, city, state/province and ZIP/postal code,as described with reference to FIG. 2 a.

In some implementations, the list box 102 also includes a custom webaddress option, which allows a user to construct a custom URL, asdescribed with reference to FIG. 3. The selection of websites presentedin list box 102 and presentation order can be determined by the order inwhich the website templates are listed in a website template file, asdescribed with reference to Table I. For example, in the source thatdefines the templates, specifying the template for Search before thetemplate for Financial Stock lookup will result in that same order inthe list box 102 displayed to the user.

FIG. 1 illustrates a setup dialog “schematic” in that it shows thevarious components of a generic setup dialog before a website isselected from the list box 102. There can be explanatory text at the topof the setup dialog 100 that instructs the user on how to interact withthe setup dialog 100. In this implementation, the check box 110 controlshow the user will interact with the resulting web page (not shown) thatis displayed. If checked, the web page will be interactive similar tohow it would be in a web browser. For example, any links embedded in theweb page will be active. In this implementation, there are fiveparameter edit boxes 106, each of which is associated with a specifyfield dialog button 108. More or fewer parameter edit boxes 106 can bepresented based on the number of parameters specified in the templatefor the corresponding website. Each parameter edit box 106 also has alabel 116 for naming the parameter and a label 118 for indicatingwhether the parameter is required or optional for the URL. The labels116, 118 can be localized to a specific language (e.g., English,Spanish).

For database development tool applications, the setup dialog 100 can beinitially presented to the user when the web viewer is first defined ina layout. In some implementations, the number of parameter edit boxesthat can be displayed are stored in a website template file. If only twoparameters are needed for a URL, then only two parameter edit boxes 106need be presented. Any controls (e.g., controls 106, 108, 116, 118) thatare included in a given website template can be enabled when the websiteis selected.

FIG. 2 a illustrates an implementation of a web viewer setup dialog 200with a map website template selected. The setup dialog 200 includes alist box 202 containing websites for which website templates areavailable, and parameter edit boxes 206 (specified in the map websitetemplate) for street address, city, state/province and ZIP/postal. Whenthe user interacts with the list box 202 (e.g., a mouse over), text,images or other content can be displayed in the setup dialog 200, asshown in FIG. 2 b. As shown in FIG. 2 b, a display pane 216 is presentedwhen the user hovers a mouse (or other pointing device) over a websitename in the list box 202 that presents context-sensitive informationabout that website. A drop-down menu 218 or other user interface element(e.g., a help balloon) can be presented when the button 218 is activatedby a user.

In some implementations, when the user selects a new website from thelist box 202, the previous contents of the web address edit box 204 (ifany) are discarded and replaced with a “template” for the calculatedexpression 212 for the website URL. The template calculation expression212 can include a stem plus other elements of the template, such asstring literals and parameters marked “alwaysPresent” (see Table I). Anyvalues, expressions or fields entered in the parameter edit boxes 206are added to the calculated expression 212 to build the map website URL.As the user fills the parameter edit boxes 206 the entries appear in theweb address edit box 204 as part of the calculated expression 212, thusallowing-the user to see the URL being built. The user can manually editthe “under construction” URL in the web address edit box 204. If awebsite template is used to build a URL, then that template can bepersistent to the web viewer object on the database layout, so that ifthe setup dialog 200 is closed and re-opened, the originally selectedwebsite template is re-selected, provided the calculated expression 212for the website URL is not changed significantly by the user.

In the example shown, the web address edit box 204 contains a calculatedexpression and not an actual URL that a user could paste into a browser.As the calculated expression is built, its individual parts areconcatenated with an operator, which in this example is the FileMaker®concatenation operator, “&.” Other choices for concatenation operatorsare possible.

In some implementations, a click on a website in the list box 202 (otherthan “Custom Web Address”) will clear the web address edit box 204 andinsert a template for the calculated expression 212 for the currentlyselected website. In general, the web address edit box contains a“master copy” of the calculated expression 212 desired by the user. Forexample, when the setup dialog 200 is re-opened, the calculatedexpression 212 is presented in the web address edit box 204 first, andthe list box 202 and parameter edit boxes 206 derive their values fromthe calculated expression 212 in the web address edit box 204. That is,the parameters of the URL can be dynamically derived from the calculatedexpression 212 in the web address edit box 204 and presented in thecorresponding parameter edit boxes 206. For example, when an expressionis typed by a user in the web address edit box 204, the parameters ofthe expression are continuously parsed and extracted, allowing theparameters to be reflected in real time in the parameter edit boxes 206.Conversely, as a user types in the parameter boxes 206, the web addressedit box 204 is populated with parameters in real time.

In some implementations, the calculated expression 212 is broken downinto its component pieces (e.g., the stem and the parameters (label,value)). The calculated expression 212 is transformed into polish prefixnotation represented as an expression tree. The list of parameters usedin the calculated expression 212 are then determined from the top levelbranches of the expression tree. The order of the parameters in theexpression tree are matched to counterpart parameters in an XMLdefinition stored in an XML file (see Table I). The values from thematching parameters from the expression tree are then placed within thecorresponding edit boxes 206 in the setup dialog 200. When the userclicks the OK button in the setup dialog 200, the calculated expression212 in the web address edit box 204 is saved.

FIG. 2 c is the web viewer setup dialog 200 of FIG. 2 a, including thespecification of a database record field for a first web addressparameter. In the example shown, the user has selected the maps website.In response to selection of the maps website the setup dialog 200reflects the parameters associated with the maps website URL. The userclicks the button 208 to choose whether to enter a specify calculationdialog or a specify field dialog. If the user chooses the specify fielddialog, the user enters a specify field dialog and is presented with alist of fields in the database. In the example shown, the user selects a“Contacts::street_address” field 222 from the specify field dialog. Inresponse to the selection, a parameter string “&address=” and the“Contacts::street_address” field 222 are concatenated to the calculatedexpression 220 using the concatenation operator “&”. The calculatedexpression 220 in web address edit box 204 now has the form

http://www.map.com/maps.adp?&”country=US” & ”&address=”&Contacts::street_address.

FIG. 2 d is the web viewer setup dialog of FIG. 2 a, including thespecification of a database record field for a second web addressparameter. The user selects the 37 Contacts::city” field 224 from aspecify field dialog associated with the “City” URL parameter. In theexample shown, the specify field dialog can be invoked by clicking thebutton 228. In response to the website selection, a correspondingparameter identifier string “&city=” and the “Contacts::city” field 224are concatenated to the calculated expression 226 in the web addressedit box 204 using the “&” concatenation operator. In addition, the userhas entered the literal “CA” to the “State/Province” parameter edit box206, which is also concatenated to the calculated expression 226, whichnow has the form

http://www.map.com/maps.adp?&”country=US” &”&address=”&Contacts::street_address & ”&city=”& Contacts::city & ”&state=”& ”CA”.

Note that when the text entry cursor/focus is moved from theState/Province parameter edit box 206, the text “CA” within theparameter edit box 206 is automatically quoted and included in thecalculated expression 226.

Custom Web Address

FIG. 3 is an implementation of a web viewer setup dialog 300 with acustom web address option selected. The custom web address allows usersto enter a calculated expression into the web address edit box 302without working within a website template. When the user selects the“Custom Web Address” option from the list box 302, the user can build acustom calculated expression in the web address edit box 304 usingcustom parameters. The values in the expression can be literals, recordfields, calculated expressions, etc. Note that for this option, theparameter edit boxes and associated labels and menu controls are hiddenand the current calculated expression, if any, is presented in the webaddress edit box 304. If the user explicitly selected “Custom WebAddress” in the list box 302, the selection can be remembered betweensetup dialog sessions, so that even if a custom calculation expressionmatches a particular website template, the “Custom Web Address” will beselected instead when the setup dialog is re-opened.

FIG. 4 is an implementation of a web viewer setup dialog 400 that can beinvoked by a script (e.g., a FileMaker® ScriptMaker® script). In someimplementations, the setup dialog 400 can be invoked from a step in ascript. For example, as part of a script a user may desire to displaywebsite content. For “data-driven” websites, a URL may need to be builtfor this purpose. In the example shown, the setup dialog 400 includesparameter edit boxes 406 that the user can specify values for eitherthrough a specify field dialog or by entering values, conditions orcalculated expressions in the parameter edit boxes 406.

Web Viewer Setup Dialog Process

FIG. 5 is a flow diagram of an implementation of a web viewer setupdialog process 500. The process 500 begins by the user defining a webviewer object in a layout (502). For example, with some databasedevelopment tools, a user can place a web viewer control on a layout.The database designer can use a web viewer tool (e.g., presented in aLayout mode of FileMaker() and a mouse to draw out a bounding box in thelayout. The bounding box defines the boundaries of the web viewer objectin the layout. Step 502 is specific to a database development tool andmay be omitted for other applications.

When the user places the web viewer object in the layout, the web viewersetup dialog is presented (504). The setup dialog includes a list box ofwebsites for which website templates are available for building thewebsite URL. The list box also includes a custom web address option. Theuser chooses a desired website or a custom web address option from thelist box (506). If a website is chosen, the process 500 determines thenumber of possible parameters that the website needs to build its URL(508). The user chooses a record field value from a specify field dialogand/or directly enter a value, field or calculated expression (which mayinclude using a static string) in a parameter edit box for eachparameter (510). If the user is not using a website template, then theuser can type a calculated expression directly into a web address editbox using, for example, a keyboard or other suitable input device.Otherwise, the user can click a button to open a specify calculationdialog, where a calculated expression for the URL is constructed (512).When the specify calculation dialog button is clicked, a dialog ispresented that provides tools for building complex custom calculationsfrom scratch, or tools for modifying a pre-generated calculatedexpression in a more structured way.

URL Encoding

URLs follow standard rules. One of these rules addresses whatconstitutes a “valid” URL. Valid URLs typically require a protocol, suchas the convention “http://.” Another more general URL rule dictates howto represent certain parts of a URL using “special characters” and whatkind of characters must be “encoded” when used as data. This scheme isreferred to as “URL Encoding.”

Web browsers will sometimes make assumptions or break conventions ofwhat can be typed into a Web Site address box. However, because a WebViewer control may not be a full featured Web browser, and due to themyriad of possibilities that an application's calculation engine canprovide, the text used for a URL for a web viewer should conform tospecific rules. This is especially true, because for many solutions theURLs will vary from record to record.

Any Web Viewer object has an associated calculation formula, whoseresult will be used as a URL. Since the final result of the calculationcould be inconsistent across records, in order for the web viewer andthe underlying OS components to work properly the data should conform totwo conventions. First, the final result of the calculation should formvalid URLs, especially in the case of providing a protocol. Second,since the URL ultimately should be “URL Encoded,” and the web viewerautomatically encodes the calculation result, the calculation formulashould provide text that is not encoded. For example, if your web vieweris based on a field called “web_server_address,” with contents like“www.filemaker.com”, the first convention requires that the calculationinclude a protocol:

“http://” & tablenamehere::web_server_address.

For worldwide interoperability, URLs should be encoded uniformly. To mapthe wide range of characters used worldwide into about 60 or moreallowed characters in a URL, a two-step process can be used. First, the“encodable” characters can be converted into a sequence of bytes using,for example, UTF-8 encoding. Second, each UTF-8 byte can be convertedinto a three-character sequence, like % HH, where HH is a hexadecimalvalue of the byte. In some implementations, a web viewer can determinewhich characters are “encodable” based on the following rules:

-   -   Rule 1: The following characters will not be automatically        encoded:    -   ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345        6789-_.˜!*( );:(@=+$,/?[ ]    -   Rule 2: If the character is an ampersand (&), it will be encoded        only if a space follows it. (e.g., “& ” will be encoded, but        “&x” will not).    -   Rule 3: If the character is a pound sign (#), it will be encoded        only if a number (0..9) character follows it.    -   Rule 4: Both backslash \and percent sign % will be encoded.    -   Rule 5: Any other character not mentioned in Rules 1-4 will be        encoded.

The rules described above can be applied across multiple computingplatforms (e.g., Mac® OS X and Windows® platforms). On a Windows®platform, a given “file://” URL can bypass the web viewer automaticencoding method described above and the text can be provided to the OSweb component without encoding.

URL Grammar

In some implementations, it may be desirable to create custom websitetemplates that can be accessed through a setup dialog. A URL grammar canbe used for this purpose. For consistency, each website template caninclude a set of basic specifications. For example, each websitetemplate can have a title, explanatory text describing the website, amethod for specifying static and dynamic syntax of the URL. In addition,each parameter of a URL can have a name, a status label to indicatewhether the parameter is required or optional, and any other desiredspecification, such as whether the parameter should always be present inthe URL. In some implementations, one or more sub-parameters(hereinafter also referred to as “virtual parameters”) can also beincluded in the URL grammar. Other features can be added or removed fromthe specification of a website template, as desired.

The URL grammar can be implemented in any suitable language. For theimplementation described below, Extensible Markup Language (XML) is usedto implement the URL grammar (hereinafter also referred to as “XMLgrammar”). XML grammar can be stored in an XML file where it can beretrieved and used to configure a setup dialog in a web viewer.

Ideally, the grammar is concise and in some implementations can take theform of

-   -   [header]        -   [single website url template #1]        -   [single website url template #2]        -   [single website url template #3]

In some implementations, three element tags are defined for a websiteURL template as follows:

-   -   1. <WebsiteURLTemplate> contains the entire template for a        single website's URL.    -   2. <URLElement> specifies a specific part of the website URL,        either a literal string or a parameter for the URL's common        gateway interface (CGI). For this implementation, the        <URLElement> tag has attributes for type, label, dialog display        information, and for specifying how the parameter is found in F        the URL. The tag also has contents that are specific to the type        of URLElement, including allowing for one level of        URLVirtualParameters.    -   3. <URLVirtualParameter> enables a template to represent several        parameters in a setup dialog as a single parameter for a CGI.        These virtual parameters can be combined together later as one        parameter in the actual URL. This tag would have attributes for        label and description but no content attribute.

The functionality of each of these tags is summarized in Table I below.

TABLE I Examples of Element Tags and Attributes Element Tag Name ElementValue Attribute Names Attribute Values <WebsiteURLTemplateList> (contentis a single The document container tag. level list of WebsiteURLTemplates) <WebsiteURLTemplate...> (content is all of the URLElements,in order of assembly <WebsiteURLTemplateList>  <WebsiteURLTemplate...>  ... Name “website X” if missing, ignore template. Description “WebsiteX is a web service offering...” baseURL http://www.websitex.com/... Ifmissing, ignore template parameterIndicator “=” indicates what separatesa parameter name from its value in a name/value pair (e.g., “price =123”) If “=” is missing, “=” is assumed. parameterSeparator “&”indicates what separates name/value pairs (the whole parameter), e.g.,“price=123&location=santaclara” If “&” is missing, “&” is assumed.<URLElement...> (Content: (This element only resides as type=Literal,content is content within a static text concatenatedWebsiteURLTemplate.) alongside other URLElements; type=Parameter,content is reserved and currently ignored; type=Virtual, content is alist of sub- parameters (URLVirtualParameter) in the dialog to betreated as a single parameter in the final resolved URL sent to thebrowser.) <WebsiteURLTemplateList>  <WebsiteURLTemplate...>  <URLElement..>    ... type “Literal” - this part of the url isunchanging static text within the url “Parameter” - this part of the Urlis a parameter for the cgi, shown with its own edit box in the dialog.Most cgi's will have individual parameters. “Virtual” - this part of theurl is a single parameter for the cgi, but the dialog must display it inpieces as if they were separate parameters. “Virtual”s should only beused when the cgi expects more than one kind of value in a singleparameter. If missing, assumes Literal. label Label representing theName for the parameter edit in the dialog (e.g., “Location Address)-ignored for ”Literal“ and “Virtual”elements. This text should be in theappropriate language in the file, properly encoded. userHint Asupplementary informational label associated with the parameter edit asa “hint” to the user. Usually this will be something like “Required” or“Optional”, but it could be any small phrase. This text should be in theappropriate language in the file, properly encoded. Unused if “Virtual”.description Help information for the parameter. Unused if “Virtual” or“Literal.” parameterIdentifier “q” - What defines this parameter in thefinal URL (used for both parsing and creating the final calculationformula). This is needed for both “Parameter” and “Virtual” elements.alwaysPresent “true” (in all languages) - The Identifier is alwaysincluded in the calcs and final URLs even if the parameter's value isstill empty. “False” (in all languages) - The identifier is not includedin the calculations and final URLs even if the parameter's value isstill empty. If missing, assumes “True.” virtualSeparator For “Virtual”elements this defines the text placed in between eachURLVirtualParameter when the URL is assembled for the browser. It can beempty. Only used for “Virtual” elements. If missing, assumes “,”[comma].<URLVirtualParameter> (content is reserved (This node only resideswithin and is currently the content of a URLElement of ignored) type“Virtual”) <WebsiteURLTemplateList>  <WebsiteURLTemplate...>  <URLElement...>    <URLVirtualParameter...> label “Address”description Help information for the parameter. userHint A supplementaryinformational label associated with the parameter edit as a “hint” tothe user. Usually this will be something like “Required” or “Optional”,but it could be any small phrase. This text should be in the appropriatelanguage in the file, properly encoded.

Referring to Table I, the element tag name <WebsiteURLTemplateList> is adocument container tag. The content for this tag is a single level listof website templates having tag names <WebsiteURLTemplate . . . >. Thecontent of a given <WebsiteURLTemplate . . . > are its URL elementshaving tag names <URLElements . . . >, which are listed in order ofassembly. The grammar described above is represented by the framework

<WebsiteURLTemplateList>   <WebsiteURLTemplate...>     ...     <URLElement...>       ...

In some implementations, each website template having a tag name<WebsiteURLTemplate . . . > can include the following attributes: name,description, baseURL, parameterlndicator and parameterSeparator.

A value for the name attribute can be the name of the websitecorresponding to the website template. If no value is assigned to thename attribute, then the website template can be ignored and notdisplayed in the setup dialog.

The value for the description attribute can be a string describing thewebsite or providing any other desired information.

A value of “=” for the attribute parameterindicator indicates whatseparates a name from its value in a name/value pair (the wholeparameter). For example, “price=123”. If “=” is missing then “=” can beassumed.

A value of “&” for the attribute parameterseparator indicates whatseparates name/value pairs (the whole parameter). For example,“price=123&locatiom=santaclara”. If “&” is missing then “&” can beassumed.

The <URLElement> tag can reside as content within a<WebsiteURLTemplate>. In some implementations, the attributes for thistag can include: type, label, userHint, description,parameterIdentifier, alwaysPresent, virtualSeparator.

For this example, there can be three types of elements: Literal,Parameter and Virtual. A Literal element is the part of the URL that isunchanging static text within the URL. A Parameter element is aparameter for the CGI for the URL, which is shown in the setup dialogwith its own edit box. Note that most CGIs will have individualparameters. A Virtual element is the part of the URL that is a singleparameter for the CGI, but the setup dialog will display it in parts asif the single parameter was multiple parameters. Note that Virtualelements will typically be used when the CGI expects more than one kindof value in a single parameter. If a value is missing for the typeattribute, then a Literal element can be presumed.

The label attribute can represent the name for the parameter displayedin the setup dialog (e.g., label 116). This attribute can be ignored forLiteral and Virtual elements. The text for this label should be in theappropriate language and properly encoded.

The userHint attribute provides a supplementary information label in thesetup dialog which is associated with a parameter to provide a “hint” toa user. Examples are the panes 216, 218, shown in FIG. 2B. The userHintcan indicate whether the parameter is required or optional, or it can bea phrase providing information or instructions to the user.

The description attribute provides information for a parameter and isunused for Literal and Virtual elements. If a help dialog (e.g.,“ToolTips” in FileMaker®) is available, then the attribute can be usedwith the help dialog.

The parameteridentifier attribute defines the parameter in the final URL(i.e., the parameter name in the URL should immediately follow, and beseparated by other parameters, by a “&” character in the final URL).This attribute can be used with Parameter and Virtual elements.

The alwaysPresent attribute can be a Boolean operator that is set to“True” if the parameteridentifier is always included in the calculatedexpression and final URLs even if the parameter's value is still empty.It can be set to “False” if the parameterndentifier is not included inthe calculated expression and final URL even if the parameter's value isstill empty.

For Virtual elements, the virtualseparator defines the text placedbetween each <URLVirtualParameter> when the URL is assembled for the webviewer. It can be empty. This attribute is used for Virtual elements. Ifit is missing, a “,” [comma] can be assumed.

In some implementations, the <URLVirtualParameter> element tag caninclude three attributes: label, description and userHint. The labelprovides a label for a sub-parameter displayed in the setup dialog. Thedescription attribute provides help information for the sub-parameter,and can be used with a help dialog. The userHint attribute providessupplementary information associated with the parameter. Examples arethe panes 216, 218, shown in FIG. 2B. The userHint can indicate whetherthe parameter is required or optional, or it can be a phrase providinginformation or instructions to the user.

The grammar described above provides a framework for developing customtemplates. If the grammar is followed, users can create custom templatesand be assured that they will be operable in the web viewer. The grammarcan be extended or reduced as necessary to accommodate a variety of URLgrammars.

User System Architecture

FIG. 6 is a block diagram of an implementation of a user systemarchitecture 600 for hosting a database development tool that includes aweb viewer setup dialog. Other architectures are possible, includingarchitectures with more or fewer components.

In some implementations, the user system architecture 600 includes oneor more processors 602 (e.g., dual-core Intel® Xeon® Processors), adisplay device 604 (e.g., an LCD), a network interface 606 (e.g., aEthernet, USB, Firewire®), one or more control devices 608 (e.g., mouse,keyboard) and one or more computer-readable mediums 510 (e.g., RAM, ROM,SDRAM, hard disk, optical disk, flash memory, SAN, etc.). Thesecomponents can exchange communications and data over one or more buses612 (e.g., EISA/ISA, PCI, PCI-Express) for facilitating the transfer ofdata and control signals between the components and subsystems of thearchitecture 600.

The term “computer-readable medium” refers to any medium thatparticipates in providing instructions to a processor 602 for execution,including without limitation, non-volatile media (e.g., optical ormagnetic disks), volatile media (e.g., memory) and transmission media.Transmission media includes, without limitation, coaxial cables, copperwire and fiber optics. Transmission media can also take the form ofacoustic, light or radio frequency waves.

The computer-readable medium 610 further includes an operating system614 (e.g., Mac OS®, Windows® XP, Linux® OS), a network communicationmodule 616 and a database development tool 618 (e.g., FileMaker®). Theoperating system 614 can be multi-user, multiprocessing, multitasking,multithreading, real time, etc. The operating system 614 performs basictasks, including but not limited to: recognizing input from the controldevices 608 and providing output to the display device 604; keepingtrack and managing files and directories on computer-readable mediums610 (e.g., memory or a storage device); controlling peripheral devices(e.g., printers, external storage devices); and managing traffic on theone or more buses 612. The network communications module 616 includesvarious components for establishing and maintaining network connectionswith network devices (e.g., software for implementing communicationprotocols, such as TCP/IP, HTTP, wireless protocols, etc.).

The database management tool 618 includes web viewer files 620 forcreating a web viewer object in a layout for allowing users to haveaccess to websites from within a database. The web viewer files 602include code for generating a web viewer setup dialog 622 and one ormore web site templates 624. The web viewer setup dialog 622 and thewebsite templates were described with reference to FIGS. 1-5. Inaddition to default website templates, the user can create customwebsite templates using the URL grammar described with reference toTable I. The database development tool 618 can include multiple softwarecomponents or it can be a single body of code.

Various modifications may be made to the disclosed implementations andstill be within the scope of the following claims.

1. A method, comprising: presenting a setup dialog; receiving a firstinput through the setup dialog, the first input specifying a website forwhich a website template is available for building a web address for thewebsite; determining a parameter of the web address based on the websitetemplate; presenting the parameter in the setup dialog; receiving asecond input through the setup dialog, the second input specifying avalue for the parameter; and generating the web address with thespecified value.
 2. The method of claim 1, where receiving the secondinput specifying a value further comprises: specifying a value to be adatabase record field.
 3. The method of claim 1, further comprising:presenting instructions in the setup dialog for generating the webaddress.
 4. The method of claim 1, further comprising: presentinginformation in the setup dialog indicating if the parameter is requiredor optional for the web address.
 5. The method of claim 1, wherereceiving the first input specifying the website further comprises:receiving a request for a website selected from a list of websitespresented in the setup dialog.
 6. The method of claim 1, furthercomprising: presenting a static portion of the web address in the setupdialog; and adding the value to the static portion of the web address.7. The method of claim 1, further comprising: deriving values from auser created web address formula; and presenting the derived values inthe setup dialog.
 8. The method of claim 1, further comprising:receiving an edit for the web address; applying the edit to the webaddress; and displaying the edited web address in the setup dialog. 9.The method of claim 1, where presenting the setup dialog furthercomprises: defining a web viewer object in a database layout; andpresenting the setup dialog after the web viewer object is defined. 10.The method of claim 1, further comprising: providing setup dialoglocalized to a specific language.
 11. The method of claim 1, wherepresenting the parameter in the setup dialog further comprises:presenting the parameter in the setup dialog in accordance with grammarassociated with the website template.
 12. A computer-readable mediumhaving instructions stored thereon, which, when executed by a processor,causes the processor to perform the operations of: presenting a setupdialog; receiving a first input through the setup dialog, the firstinput specifying a website for which a website template is available forbuilding a web address for the website; determining a parameter of theweb address based on the website template; presenting the parameter inthe setup dialog; receiving a second input through the setup dialog, thesecond input specifying a value for the parameter; and generating theweb address with the specified value.
 13. The computer-readable mediumof claim 12, where receiving the second input specifying a value furthercomprises: specifying a value to be a database record field.
 14. Thecomputer-readable medium of claim 12, further comprising: presentinginstructions in the setup dialog for generating the web address.
 15. Thecomputer-readable medium of claim 12, further comprising: presentinginformation in the setup dialog indicating if the parameter is requiredor optional for the web address.
 16. The computer-readable medium ofclaim 12, where receiving the first input specifying the website furthercomprises: receiving a request for a website selected from a list ofwebsites presented in the setup dialog.
 17. The computer-readable mediumof claim 12, further comprising: presenting a static portion of the webaddress in the setup dialog; and adding the value to the static portionof the web address.
 18. The computer-readable medium of claim 12,further comprising: deriving values from a user created web addressformula; and presenting the derived values in the setup dialog.
 19. Thecomputer-readable medium of claim 12, further comprising: receiving anedit for the web address, applying the edit to the web address; anddisplaying the edited web address in the setup dialog.
 20. Thecomputer-readable medium of claim 12, where presenting the setup dialogfurther comprises: defining a web viewer object in a database layout;and presenting the setup dialog after the web viewer object is defined.21. The computer-readable medium of claim 12, further comprising:providing setup dialog localized to a specific language.
 22. Thecomputer-readable medium of claim 12, where presenting the parameter inthe setup dialog further comprises: presenting the parameter in thesetup dialog in accordance with grammar associated with the websitetemplate.
 23. A system, comprising: means for presenting a setup dialog;means for receiving a first input through the setup dialog, the firstinput specifying a website for which a website template is available forbuilding a web address for the website; means for determining aparameter of the web address based on the website template; means forpresenting the parameter in the setup dialog; means for receiving asecond input through the setup dialog, the second input specifying avalue for the parameter; and means generating the web address with thespecified value.